import Vue from 'vue';

/** 封装一层基类, 让页面继承使用更加方便 */
export abstract class MyVue extends Vue {
    public $store: any;
    public $refs: any;
    public $route: any;
    public $routes: any[];
    public $router: any;
    public myState: any;
    constructor() {
        super();
        this.initData(this);
    }

    /** 更新数据, 在构造函数调用 */
    abstract initData(that?: any): void;

    /** 
     * @deprecated 使用全局的 WLDispatch()
     */
    public dispatch(type: string, data?: any): void {
        this.$store.dispatch(type, data);
    }

    /** 
     * @deprecated 使用全局的 WLDispatch()
     */
    public commit(type: string, data?: any): void {
        this.$store.commit(type, data);
    }


    public getOpValue(type: string, opKey: string): string {
        let arr: OpInfo[] = this.$store.state.opInfos[type];
        let len = arr ? arr.length : 0;
        for (var i = 0; i < len; i++) {
            if (arr[i].opKey === opKey) {
                return arr[i].opValue;
            }
        }
        return "";
    }

    /** 
     * 页面被切换活动状态下激活
     * 在路由设置为 keep-alive 时候, 切换页面不会触发 mounted, 需要使用这个方法代替, 
     */
    public activated(): void {

    }

    /** 
     * 页面被切换非活动状态下激活 
     * 清理事件等数据 
     */
    public deactivated(): void {

    }
}